package 定长滑动窗口

func maxSatisfied(customers []int, grumpy []int, minutes int) int {
	s, s2, ans := 0, 0, 0
	//进
	for i, num := range customers {
		if grumpy[i] == 0 {
			s2 += customers[i]
		} else {
			s += num
		}

		left := i - minutes + 1
		if left < 0 {
			continue
		}
		//更
		ans = max(ans, s)

		// 4. 左端点离开窗口：只有当左端点是生气状态（grumpy[left]=1），才从s中减去
		// （因为grumpy[left]=0的顾客未被计入s，无需减去）
		if grumpy[left] == 1 {
			s -= customers[left]
		}

	}
	ans += s2
	return ans
}

//func maxSatisfied(customers, grumpy []int, minutes int) int {
//    s := [2]int{}
//    maxS1 := 0
//    for i, c := range customers {
//        s[grumpy[i]] += c
//        if i < minutes-1 { // 窗口长度不足 minutes
//            continue
//        }
//        maxS1 = max(maxS1, s[1])
//        if grumpy[i-minutes+1] > 0 {
//            s[1] -= customers[i-minutes+1] // 窗口最左边元素离开窗口
//        }
//    }
//    return s[0] + maxS1
//}
//
//作者：灵茶山艾府
//链接：https://leetcode.cn/problems/grumpy-bookstore-owner/solutions/2751888/ding-chang-hua-dong-chuang-kou-fu-ti-dan-rch7/
//来源：力扣（LeetCode）
//著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
